* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

section {
  /* 盒子内 div 居中显示 */
  display: flex;
  justify-content: center;
  align-items: center;

  min-height: 100vh;
  background-color: #001d30;

  animation: changeBgc 5s linear infinite;
}

@keyframes changeBgc {
  100% {
    /* 添加滤镜：色相旋转 */
    filter: hue-rotate(360deg);
  }
}

.loader {
  position: relative;
  width: 150px;
  height: 150px;
  /* 线性渐变 0 - 40% 是纯黑色 100%之后是纯浅蓝色 40% - 60% 是渐变色  */
  background: linear-gradient(to top, #001d30 40%, #51eeee 100%);
  border-radius: 50%;
  /* 动画名字 | 持续时间 | 线性函数 | 循环次数 */
  animation: rotate 2s linear infinite;
}

@keyframes rotate {
  100% {
    transform: rotate(360deg);
  }
}

/* 伪元素添加定位（不给宽高、必须四个方向都有值）, 就会出现一个新的盒子 */
.loader::before {
  content: "";
  background-color: #001d30;
  position: absolute;
  /* 等价于 top:20; right:20; bottom:0; left:0 */
  inset: 20px 20px 0 0;
  border-radius: 50%;
}

/* 伪元素选择器给定宽高 */
.loader::after {
  content: "";
  position: absolute;
  top: 50px;
  right: -8px;
  width: 40px;
  height: 40px;
  background-color: #51eeee;
  border-radius: 50%;
  /* x偏移量 | y偏移量 | 阴影颜色 */
  box-shadow: 0 0 5px #51eeee, 0 0 25px #51eeee, 0 0 50px #51eeee,
    0 0 75px #51eeee;
}
